-
Notifications
You must be signed in to change notification settings - Fork 657
feat: Add MCPB bundle for Claude Desktop installation #580
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Add Model Context Protocol Bundle (MCPB) support enabling single-click installation in Claude Desktop and other MCP hosts. Changes: - Add manifest.json with uvx-based server configuration - Add icon.png for display in Claude Desktop - Add .mcpbignore for build exclusions - Add pre-built unity-mcp.mcpb bundle 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Reviewer's GuideAdds a Model Context Protocol Bundle (MCPB) manifest and related packaging files so the Unity MCP server can be installed as a one-click bundle in Claude Desktop and other MCP hosts, using an uvx-based Python server entrypoint and enumerating all available tools. Sequence diagram for MCPB-based Unity MCP installation and launchsequenceDiagram
actor User
participant ClaudeDesktop
participant MCPBundle
participant MCPServerPython
participant PyPI
participant UnityEditor
User->>ClaudeDesktop: double_click unity_mcp_mcpb
ClaudeDesktop->>MCPBundle: read manifest_json
MCPBundle-->>ClaudeDesktop: server_config(type_python, entry_point, uvx_command)
ClaudeDesktop->>ClaudeDesktop: register tools_from_manifest
User->>ClaudeDesktop: select Unity_MCP_server
ClaudeDesktop->>MCPServerPython: launch uvx --from mcpforunityserver mcp_for_unity
MCPServerPython->>PyPI: download mcpforunityserver (if_needed)
PyPI-->>MCPServerPython: package_files
MCPServerPython->>UnityEditor: connect_via_Unity_MCP_plugin
UnityEditor-->>MCPServerPython: connection_ready
MCPServerPython-->>ClaudeDesktop: mcp_server_ready_with_29_tools
User->>ClaudeDesktop: invoke_tool manage_gameobject
ClaudeDesktop->>MCPServerPython: mcp_tool_request manage_gameobject
MCPServerPython->>UnityEditor: apply_gameobject_operation
UnityEditor-->>MCPServerPython: operation_result
MCPServerPython-->>ClaudeDesktop: tool_response
ClaudeDesktop-->>User: show_result
File-Level Changes
Possibly linked issues
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
📝 WalkthroughWalkthroughTwo new configuration files are introduced at the project root: Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~5 minutes Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey - I've found 1 issue, and left some high level feedback:
- The
server.entry_pointis set toServer/src/main.pywhile the actual launch is handled viauvxinmcp_config; if the entry point is unused for this server type, consider either aligning it with the real module or omitting it to avoid confusion for future maintainers. - The
.mcpbignorefile is currently empty; consider explicitly ignoring the generated.mcpbbundle and any build or tooling artifacts (e.g.,node_modules,.venv, caches) to keep bundles minimal and reproducible.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- The `server.entry_point` is set to `Server/src/main.py` while the actual launch is handled via `uvx` in `mcp_config`; if the entry point is unused for this server type, consider either aligning it with the real module or omitting it to avoid confusion for future maintainers.
- The `.mcpbignore` file is currently empty; consider explicitly ignoring the generated `.mcpb` bundle and any build or tooling artifacts (e.g., `node_modules`, `.venv`, caches) to keep bundles minimal and reproducible.
## Individual Comments
### Comment 1
<location> `manifest.json:20-23` </location>
<code_context>
+ "icon": "icon.png",
+ "server": {
+ "type": "python",
+ "entry_point": "Server/src/main.py",
+ "mcp_config": {
+ "command": "uvx",
+ "args": ["--from", "mcpforunityserver", "mcp-for-unity"],
+ "env": {}
+ }
</code_context>
<issue_to_address>
**issue (bug_risk):** Clarify whether the server should be launched via entry_point or mcp_config to avoid conflicting definitions.
The manifest defines both a Python `entry_point` and an `mcp_config` using `uvx`, which may cause different hosts to choose different startup paths. Decide which mechanism should be canonical and remove the other to avoid inconsistent behavior across MCP clients.
</issue_to_address>Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
| "entry_point": "Server/src/main.py", | ||
| "mcp_config": { | ||
| "command": "uvx", | ||
| "args": ["--from", "mcpforunityserver", "mcp-for-unity"], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
issue (bug_risk): Clarify whether the server should be launched via entry_point or mcp_config to avoid conflicting definitions.
The manifest defines both a Python entry_point and an mcp_config using uvx, which may cause different hosts to choose different startup paths. Decide which mechanism should be canonical and remove the other to avoid inconsistent behavior across MCP clients.
|
Thanks @triepod-ai, I might merge this in soon. We should also update |
|
Thinking a bit more, the bundle updates every version. I think this is better suited as a release artifact than something that lives and is updated in the repo. |
|
Hey @triepod-ai, can you change this so the MCPB is NOT added to the repo, but generated on each release? Something like this: release.yml: - name: Generate MCPB bundle
env:
NEW_VERSION: ${{ steps.compute.outputs.new_version }}
shell: bash
run: |
set -euo pipefail
python3 tools/generate_mcpb.py "$NEW_VERSION" \
--output "unity-mcp-${NEW_VERSION}.mcpb" \
--icon docs/images/coplay-logo.png
- name: Create GitHub release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.tag.outputs.tag }}
name: ${{ steps.tag.outputs.tag }}
generate_release_notes: true
files: |
unity-mcp-${{ steps.compute.outputs.new_version }}.mcpbDo you have a nice way to keep all the tools updated? |
Summary
Adds Model Context Protocol Bundle (MCPB) support enabling single-click installation in Claude Desktop and other MCP hosts.
Changes
manifest.jsonwith uvx-based server configuration (downloads from PyPI)icon.png(Coplay avatar).mcpbignorefor build exclusionsunity-mcp.mcpbbundle for direct installationWhat is MCPB?
MCPB (MCP Bundle) is a packaging format that enables easy distribution of MCP servers. Similar to browser extensions (.crx) or VS Code extensions (.vsix), users can install the server with a single click.
Testing
mcpb validate)mcpb pack)Installation
Download the
unity-mcp.mcpbfile and double-click to install in Claude Desktop.Note: Requires the Unity MCP plugin installed in Unity Editor (see README for setup).
Building the Bundle
If you prefer to build from source:
npx @anthropic-ai/mcpb pack .🤖 Generated with Claude Code
Summary by Sourcery
Add MCP bundle metadata for the Unity MCP server to support installation via MCP hosts.
New Features:
Enhancements:
Summary by CodeRabbit
New Features
Chores
✏️ Tip: You can customize this high-level summary in your review settings.